1. Field of Invention
This invention relates to the testing of visual function, specifically to such testing by generating high speed dynamic displays for visual stimulation, followed by derivation of electrophysiological responses from such stimulation.
2. Description of Prior Art
The Multi-input M-sequence Technique Applied to Visual Evoked Responses
Early detection of retinal disease and objective evaluation of treatment require noninvasive testing of retinal function. As retinal dysfunctions commonly begin in small patches, such testing is most effective when conducted locally. When a large number of retinal areas are tested, a map of the retina can be generated with the function of each area indicated in the map.
A known method of mapping of retinal function is detailed in FIG. 1 of my above patent is schematically illustrated in FIG. 1.
As shown in FIG. 1 of that patent, a subject's eye 10 fixates on the center of an array of stimulus elements 12 on a CRT (cathode ray tube--not shown) display. These elements may be of different shapes or sizes. Typically an array of densely packed hexagons or squares is used.
All the elements are concurrently but independently modulated in time by a computer 14. Each element thus stimulates a corresponding area on a retina 16 of the subject. This visual stimulus generates or evokes bio-electrical responses in the retinal layers.
This evoked signal can be detected on the cornea of the eye by means of a special electrode 18. Such electrodes may consist of a thin conducting fiber or gold foil placed under the lower lid or a metal ring (not shown) surrounding a contact lens (not shown) covering the cornea which is not shown, but is directly under electrode 18. The response signal is amplified by an amplifier 20.
A special method of independent temporal modulation of the multiple areas permits extraction of the local responses from the response signal. The temporal modulation follows a special type of pseudo-random binary sequences, called binary m-sequences and discussed infra. This class of sequences has special properties that render it particularly useful for the purpose. The derivation and use of m-sequences is described in the next section. All areas are stimulated with the same sequence. However each element is given a different starting point in the sequence so that the contributions of all the elements to the compound response will be uncorrelated.
Local responses 22 are extracted by computation of the cross-correlation function between the applied m-sequence and the evoked response signal. The extraction is executed after completion of the recording by computer 14 by means of a special algorithm. From the array of local responses 22, a response density plot 24 is derived by means of computer 14.
This technique requires fast independent stimulation of a large number of retinal areas. Up to several hundred areas in the visual field of a human subject have to be switched rapidly and independently. The switching may be between two states differing in color, luminance level, or pattern. It has to be accomplished during retrace of the scanning electron beam of the video display. The implementation of the stimulation with conventional video techniques is difficult or impossible. In a previous implementation it was accomplished through modification of a conventional video circuit.
Binary M-sequences
Binary m-sequences are commonly generated by means of a digital shift register 26 (FIG. 2a). The modulo two sum (remainder after division by two) of the states (binary ONE or ZERO) of certain register stages is fed back to the register's serial input 28. E.g., as shown, the contents of stages 0, 5, 6, and 11 are summed modulo two and fed to the first stage. Thus, the state of the first stage will become a logic ONE if the number of logic ONEs in stages 0, 5, 6, and 11 is odd, and a logic ZERO if it is even. With proper selection of these stages (feedback taps 30), the register assumes all possible configurations (except for all ZEROs) before the process repeats itself. There are thus 2.sup.n -1 configurations in the cycle, where n is the number of stages in register 26. The sequence of ZEROs and ONEs derived from output stage 32 is called a binary m-sequence. Binary m-sequences are thus always of length 2.sup.n -1. Configurations of feedback taps that generate m-sequences can be computed or obtained from published tables.
The m-sequence can be derived from any stage of shift register 26 (FIG. 2b). A shift of output tap 32 to the left by one stage advances the sequence by one step. For a register of length n, the first n advances can be derived by moving output tap 32 to the left. Larger advances in the sequence can be obtained as the modulo two sum of specific tap configurations. FIG. 2b illustrates a mechanism for generating tap configurations for any given advance. Here the ONEs in register 26 indicate the stages of the register of FIG. 2a whose contents have to be summed (modulo two) to generate a specific advance. The process of generating taps for increasing advances starts with one output tap at the rightmost stage of the shift register. Each shift of the output tap by one stage advances the sequence by one step. This process can be continued until the tap reaches the beginning of the register. The next larger advance is produced by the parity of feedback taps 30. For subsequent advances in the sequence the entire feedback tap configuration is shifted left. Whenever a tap reaches the input stage it is replaced by the feedback tap configuration. If in this process a stage acquires two taps, then the stage always contributes even parity. Thus, this tap position is eliminated.
It follows that any advance in a binary m-sequence can be derived as the modulo two sum of certain register taps. The register taps for a specific advance are obtained by means of the operation illustrated in FIG. 2b. The register is initialized with a right justified ONE and advanced by a specified number of steps. The ONEs in the register then indicate the position of the taps for an advance of the specified number of steps.
This shift register operation can be implemented in the C-programming language by means of the following routine, called Tapregister Operation:
______________________________________ /*********************************************** Tapregister Operation ***********************************************************/ unsigned long Tapregister (tapconfig) external unsigned long tapwrd; word with ones in locations of feedback taps register unsigned long tapregister; register unsigned long tapwrd; tapwrd = feedbacktaps; tapregister = tapconfig; tapregister &lt;&lt;= 1; if (tapregister & test) tapregister tapwrd tapconfig = tapregister; return (tapconfig) } /***********************************************************/ ______________________________________
Fast Independent Modification of a Large Number of Screen Areas by Means of a Video Board with Processor
A brute force solution to the fast updating of multiple screen areas makes use of a video board equipped with a special processor and a large color look-up table. In a standard pseudo-color video circuit (circuit that generates the color signal indirectly by means of a color look-up table) an address of the color look-up table (CLUT) is stored for each pixel of the display. The content of the CLUT addresses then controls a digital-to-analog converter (DAC) for the generation of the video signal. The brightness and color of a specific screen area can be modified by changing the content of a CLUT address assigned to the area. Commonly CLUTs contain up to 256 entries. This allows independent temporal modulation of up to 256 screen areas. In applications where real-time (current) data processing is needed, updating the entire CLUT during retrace of the video display takes up too much CPU (central processing unit) time. In such cases a separate, dedicated on-board processor is required.
The implementation of the dynamic stimulus with a dedicated processor requires the development of separate software for this processor. The synchronization and interplay of two processors for stimulation and data acquisition requires much labor for software development.
Fast Independent Modification of a Large Number of Screen Areas by Means of the CPU
Previously I have used a single processor implementation with a pseudo-color video board and a supplementary circuit. The board featured a CLUT with 256 entries. Normally, updating of the CLUT requires 256 write operations. The supplementary circuit permits reduction of the number of such operations to eight. The circuit comprised 256 locations of memory addressed by the eight-bit video RAM (random access memory). Each location contains one-bit of information. This bit controls the most significant address bit to the CLUT. Changing this single bit thus switches a screen area between two states. High speed updating of all 256 areas is achieved by loading 32 locations of this one-bit memory in one 32-bit write operation. Each write operation thus controls 32 screen areas. Only eight write operations are required for each display frame.
This scheme is adequate for arbitrary independent temporal modulation of multiple areas between two states. However, the number of independently modulated areas is limited by the size of the CLUT (usually 256). The updating of a large number of areas during retrace of the CRT scan requires significant CPU time. This severely limits the time available for real-time processing.
Prior-art Extraction of the Binary Kernels with the M-sequence Technique
The multi-input m-sequence technique requires that different screen areas be modulated in time with the same m-sequence. A sufficient advance (channel advance or shift) is introduced between the stimulation of different areas (input channels) to render the corresponding responses uncorrelated. (For details see Sutter, E. E., A deterministic approach to nonlinear systems analysis. Chapter in: Nonlinear Vision. CRC Press 1992.). The contributions of each input to compound response are found on the cross-correlation cycle between the m-sequence and response cycles. The cross-correlation cycle is computed rapidly by means of the Fast M-Transform (Sutter, E. E., (1991). Fast M-Transform: Fast computation of cross-correlations with binary m-sequences. 20 SIAM Journal on Computing, 4.). If the responses are nonlinear, then several response components are generated for each input. All of them are found on the cross-correlation cycle. Their locations are determined by the choice of the m-sequence. In multi-input applications the procedures for localizing and extracting of specific components are complex (Sutter E. E. (1991), op. cit.).
In summary, all prior-art approaches to the rapid multi-area m-sequence stimulation with a CRT display are cumbersome and limited in the number of areas that can be stimulated.